成交量流量指標 (Volume Flow Indicator, VFI) 是由 Markos Katsanos 發表於《Technical Analysis of Stocks & Commodities》的重量級指標。
散戶最常犯的錯誤是看見某天爆出天量長紅就衝進去,或者看見長黑破底就恐慌停損,而這正是主力製造「假突破」與「假跌破」來進行派發與收集的慣用手法。
VFI 完美解決了傳統 OBV(能量潮指標)最大的缺陷:極易被單日異常天量扭曲。
1. VFI 的核心設計邏輯與意義
VFI 將主力資金的「收集(Accumulation)」與「派發(Distribution)」行為進行了科學化的拆解,其演算法包含三個極具巧思的過濾機制:
- 過濾極端天量 (Volume Capping):
如果某天發生錯帳、指數調整或極端的單一事件導致成交量暴增,傳統 OBV 會永久性地被這天的數據拉高或壓低。VFI 強制設定一個上限(通常是移動平均成交量的 2.5 倍),任何超過這個上限的量都會被截斷,確保指標反映的是「常態性的資金流動」,而非單日雜訊。 - 波動率截止閾值 (Cutoff Threshold):
這是 VFI 最精華的設計。股價每天都有微幅漲跌,但這些微小的波動不代表主力在介入。VFI 引入了標準差(波動率)作為門檻,只有當當日價格變動大於「截止閾值」時,當天的成交量才被視為有效的多空能量。這有效過濾了盤整期的無效雜訊。 - 長週期視角:
VFI 的標準預設週期是 130 天(約半年)。它不看短線的蠅頭小利,而是專注於掃描長期的資金底蘊。
2. 如何判讀主力的收集與派發?
- 底部收集背離 (Bullish Divergence):
股價在底部不斷破底,散戶因恐慌而拋售。但 VFI 曲線不僅沒有跟著破底,反而開始走平甚至向上抬升。這代表主力的限價買單正在底部默默「吸收」這些拋出的籌碼(過濾了雜訊與天量後,真實的淨現金流是正的)。 - 頂部派發背離 (Bearish Divergence):
股價屢創新高,市場氣氛熱烈。但 VFI 曲線卻未能創高,甚至提前跌破零軸。這強烈暗示推升股價的只是少數追高的散戶量,主力的大資金早已在逢高「倒貨」。 - 零軸突破 (Zero-Line Crossover):
VFI 是一項圍繞零軸波動的指標。當 VFI 由下往上強勢穿越零軸,並維持在上方,代表長期的籌碼流向已正式由空翻多。
3. XScript 語法
// 指標名稱:Volume Flow Indicator (VFI) - 成交量流量指標 // 作者:Markos Katsanos // ----------------------------------------------------------- Input: Length(130, "計算週期(預設130)"), Coef(0.2, "截止係數(預設0.2)"), Smooth(3, "平滑週期(預設3)"); Variable: TP(0), PrevTP(0), MF(0), Cutoff(0); Variable: Vave(0), Vmax(0), VC(0), DirVol(0); Variable: SumDirVol(0), VFI_Raw(0), VFI(0); // 1. 計算典型價格 (Typical Price) // 結合最高、最低與收盤價,比單看收盤價更具代表性 TP = (High + Low + Close) / 3; if CurrentBar = 1 then PrevTP = TP else PrevTP = TP[1]; // 價格變化量 MF = TP - PrevTP; // 2. 計算波動率截止閾值 (Cutoff) // 這裡使用 30 日收盤價的標準差乘以係數,作為過濾盤整雜訊的門檻 Cutoff = Coef * StandardDev(Close, 30, 1); // 3. 異常成交量截斷 (Volume Cap) // 限制單日最大成交量不得超過平均量的 2.5 倍 Vave = Average(Volume, Length); Vmax = Vave * 2.5; VC = MinList(Volume, Vmax); // 4. 判斷有效資金流向 (Directional Volume) // 只有當價格變動「大於」波動閾值時,才計入有效成交量 if MF > Cutoff then DirVol = VC else if MF < -1 * Cutoff then DirVol = -1 * VC else DirVol = 0; // 變動太小,視為雜訊,資金流為 0 // 5. 計算 VFI 原始數值 // 將過去 N 天的有效資金加總,並除以平均量進行標準化 SumDirVol = Summation(DirVol, Length); if Vave > 0 then VFI_Raw = SumDirVol / Vave else VFI_Raw = 0; // 6. 最終平滑處理 // 使用 XAverage (EMA) 讓曲線更平滑,便於判讀 VFI = XAverage(VFI_Raw, Smooth); // 7. 繪圖與視覺化 Plot1(VFI, "VFI"); Plot2(0, "零軸"); // 顏色標示:零軸之上為紅(資金流入),之下為綠(資金流出)
4. 產品應用:將 VFI 轉化為核心競爭力
直接將這個指標的邏輯包裝進選股模組中,能創造出非常具備實戰價值的應用場景:
- 建立「主力暗中吸籌榜」:
設定選股腳本:股價創 60 日新低 且 VFI > VFI[20] (VFI 逆勢上揚) 且 VFI > 0。
這能直接幫一般投資人篩選出那些「表面上看起來很慘,但大戶正在瘋狂撿便宜」的標的,完美切合散戶喜歡「買在底部」的需求,同時又提供了量化數據的保護。 - 中長線過濾器:
在回測系統中,鼓勵用戶將 VFI > 0 作為任何突破策略的前提。這可以大幅度降低在派發期(主力拉高出貨)追高被套牢的機率。
VFI 是一個底蘊非常深厚的指標。將它與我們先前討論過的 KAMA (自適應均線) 結合,一個負責判斷資金底氣,一個負責找尋高效率的進場點,這會是一套非常強大的現代交易系統核心。

